# -*- coding: UTF-8 -*- #
"""
-------真正的勇士， 敢于直面惨淡的Warning、 敢于正视淋漓的Error-----
@author : 贾鹏博
@file : 13、接口自动化之超时处理.py
@time : 2022/5/15 12:35
"""

import requests


# 经常遇到： 请求超时，请重新申请
# =============================  提高接口自动化的容错性。其中一个不过，不会影响到下面的执行 ============================
# ===============================  timeout单位是 ms  ============================

class TestReq:

    def test_timeout(self):
        # 时间超过 0.01s，就会报错
        r = requests.get("http://github.com", timeout=0.01)
        print(r.json())

    # =============== 抛出错误： ConnectTimeout（Connection to httpbin.testing-studio.com timed out）===================
    def test_set_timeout(self):
        # 通过 timeout 设置超时时间，timeout 对应的值通常是一个数字类型
        r = requests.post('https://httpbin.testing-studio.com/post', timeout=0.01)
        print(r.json())


# 有3个用例需要串行运行，设置用例2 超时，后面的用例不会在一直等待
class TestReq_demo:

    def setup_class(self):
        self.proxies = {"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"}

    def test_one(self):
        r = requests.post('https://httpbin.testing-studio.com/post')
        print(r.json())

    def test_second(self):
        # 通过 timeout 设置超时时间，timeout 对应的值通常是一个数字类型
        r = requests.post('https://httpbin.testing-studio.com/post', timeout=200, proxies=self.proxies, verify=False)
        print(r.json())

    def test_third(self):
        # 通过 timeout 设置超时时间，timeout 对应的值通常是一个数字类型
        r = requests.post('https://httpbin.testing-studio.com/post')
        print(r.json())
